package br.com.jbssistemas.teste;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class LerDirf {

	static Integer id;
	static String arquivoDEC;
	static String cpf;
	static String contribuinte;
	static Double valorJaneiro;
	static Double valorFevereiro;
	static Double valorMarco;
	static Double valorAbril;
	static Double valorMaio;
	static Double valorJunho;
	static Double valorJulho;
	static Double valorAgosto;
	static Double valorSetembro;
	static Double valorOutubro;
	static Double valorNovembro;
	static Double valorDezembro;
	static Double valorDecimo;

	public static void main(String[] args) {

		try {

			BufferedReader buffer = new BufferedReader(new FileReader(
					"D:\\ProjetosFonts\\workspace\\imprimedirf\\DIRF2014.DEC"));
			String linha = null;
			//
			String cpfResponsavel = null, nomeResponsavel = null, cnpj = null, municipio = null, contribuinte = null, cpf = null;
			
			Double vJan = 0.0, vFev = 0.0, vMar = 0.0, vAbr = 0.0, vMai = 0.0, vJun = 0.0, vJul = 0.0, vAgo = 0.0, vSet = 0.0, vOut = 0.0, vNov = 0.0, vDez = 0.0, vDec = 0.0;
			Double descJan = 0.0, descFev = 0.0, descMar = 0.0, descAbr = 0.0, descMai = 0.0, descJun = 0.0, descJul = 0.0, descAgo = 0.0, descSet = 0.0, descOut = 0.0, descNov = 0.0, descDez = 0.0, descDec = 0.0;
			Double irrfJan = 0.0, irrfFev = 0.0, irrfMar = 0.0, irrfAbr = 0.0, irrfMai = 0.0, irrfJun = 0.0, irrfJul = 0.0, irrfAgo = 0.0, irrfSet = 0.0, irrfOut = 0.0, irrfNov = 0.0, irrfDez = 0.0, irrfDec = 0.0;
			//
			while ((linha = buffer.readLine()) != null) {
				
				if(linha.endsWith("||")){
					int tamanho = linha.length();
					linha = linha.substring(0, tamanho - 1)+"|0|";
				}
				
				String[] linhaSeparado = linha.split("[|]");
				
				for (int i = 0; i < linhaSeparado.length; i++) {
																					
					switch (linhaSeparado[i]) {
					case "RESPO":
						cpfResponsavel = linhaSeparado[1];
						nomeResponsavel = linhaSeparado[2];
						System.out.println("Responsavel: " + cpfResponsavel + " - " + nomeResponsavel);
						break;

					case "DECPJ":
						cnpj = linhaSeparado[1];
						municipio = linhaSeparado[2];
						System.out.println("Município: " + cnpj + " - " + municipio);
						break;
					
					case "BPFDEC":
						cpf = linhaSeparado[1];
						contribuinte = linhaSeparado[2];
						System.out.println("Contribuinte: " + cpf + " - " + contribuinte);
						break;
						
					case "RTRT":
						vJan = Double.parseDouble(linhaSeparado[1].equals("")?"0.0":linhaSeparado[1].toString() ) / 100; 
						vFev = Double.parseDouble(linhaSeparado[2].equals("")?"0.0":linhaSeparado[2].toString() ) / 100;
						vMar = Double.parseDouble(linhaSeparado[3].equals("")?"0.0":linhaSeparado[3].toString() ) / 100; 
						vAbr = Double.parseDouble(linhaSeparado[4].equals("")?"0.0":linhaSeparado[4].toString() ) / 100;
						vMai = Double.parseDouble(linhaSeparado[5].equals("")?"0.0":linhaSeparado[5].toString() ) / 100;
						vJun = Double.parseDouble(linhaSeparado[6].equals("")?"0.0":linhaSeparado[6].toString() ) / 100;
						vJul = Double.parseDouble(linhaSeparado[7].equals("")?"0.0":linhaSeparado[7].toString() ) / 100;
						vAgo = Double.parseDouble(linhaSeparado[8].equals("")?"0.0":linhaSeparado[8].toString() ) / 100;
						vSet = Double.parseDouble(linhaSeparado[9].equals("")?"0.0":linhaSeparado[9].toString() ) / 100;
						vOut = Double.parseDouble(linhaSeparado[10].equals("")?"0.0":linhaSeparado[10].toString() ) / 100;
						vNov = Double.parseDouble(linhaSeparado[11].equals("")?"0.0":linhaSeparado[11].toString() ) / 100;
						vDez = Double.parseDouble(linhaSeparado[12].equals("")?"0.0":linhaSeparado[12].toString() ) / 100;
						vDec = Double.parseDouble(linhaSeparado[13].equals("")?"0.0":linhaSeparado[13].toString() ) / 100;
						
						
						System.out.println(	"Valores\nJan: " + vJan + 
											" Fev: " + vFev +
											" Mar: " + vMar +
											" Abr: " + vAbr +
											" Mai: " + vMai +
											" Jun: " + vJun +
											"\nJul: " + vJul +
											" Ago: " + vAgo +
											" Set: " + vSet +
											" Out: " + vOut +
											" Nov: " + vNov +
											" Dez: " + vDez +
											" Dec: " + vDec
											);
						break;
						
					case "RTPO":
						vJan = Double.parseDouble(linhaSeparado[1].equals("")?"0.0":linhaSeparado[1].toString() ) / 100; 
						vFev = Double.parseDouble(linhaSeparado[2].equals("")?"0.0":linhaSeparado[2].toString() ) / 100;
						vMar = Double.parseDouble(linhaSeparado[3].equals("")?"0.0":linhaSeparado[3].toString() ) / 100; 
						vAbr = Double.parseDouble(linhaSeparado[4].equals("")?"0.0":linhaSeparado[4].toString() ) / 100;
						vMai = Double.parseDouble(linhaSeparado[5].equals("")?"0.0":linhaSeparado[5].toString() ) / 100;
						vJun = Double.parseDouble(linhaSeparado[6].equals("")?"0.0":linhaSeparado[6].toString() ) / 100;
						vJul = Double.parseDouble(linhaSeparado[7].equals("")?"0.0":linhaSeparado[7].toString() ) / 100;
						vAgo = Double.parseDouble(linhaSeparado[8].equals("")?"0.0":linhaSeparado[8].toString() ) / 100;
						vSet = Double.parseDouble(linhaSeparado[9].equals("")?"0.0":linhaSeparado[9].toString() ) / 100;
						vOut = Double.parseDouble(linhaSeparado[10].equals("")?"0.0":linhaSeparado[10].toString() ) / 100;
						vNov = Double.parseDouble(linhaSeparado[11].equals("")?"0.0":linhaSeparado[11].toString() ) / 100;
						vDez = Double.parseDouble(linhaSeparado[12].equals("")?"0.0":linhaSeparado[12].toString() ) / 100;
						vDec = Double.parseDouble(linhaSeparado[13].equals("")?"0.0":linhaSeparado[13].toString() ) / 100;
						
						
						System.out.println(	"Valores\nJan: " + vJan + 
											" Fev: " + vFev +
											" Mar: " + vMar +
											" Abr: " + vAbr +
											" Mai: " + vMai +
											" Jun: " + vJun +
											"\nJul: " + vJul +
											" Ago: " + vAgo +
											" Set: " + vSet +
											" Out: " + vOut +
											" Nov: " + vNov +
											" Dez: " + vDez +
											" Dec: " + vDec
											);
						break;
						
					case "RTDP":
						descJan = Double.parseDouble(linhaSeparado[1].equals("")?"0.0":linhaSeparado[1].toString() ) / 100; 
						descFev = Double.parseDouble(linhaSeparado[2].equals("")?"0.0":linhaSeparado[2].toString() ) / 100;
						descMar = Double.parseDouble(linhaSeparado[3].equals("")?"0.0":linhaSeparado[3].toString() ) / 100; 
						descAbr = Double.parseDouble(linhaSeparado[4].equals("")?"0.0":linhaSeparado[4].toString() ) / 100;
						descMai = Double.parseDouble(linhaSeparado[5].equals("")?"0.0":linhaSeparado[5].toString() ) / 100;
						descJun = Double.parseDouble(linhaSeparado[6].equals("")?"0.0":linhaSeparado[6].toString() ) / 100;
						descJul = Double.parseDouble(linhaSeparado[7].equals("")?"0.0":linhaSeparado[7].toString() ) / 100;
						descAgo = Double.parseDouble(linhaSeparado[8].equals("")?"0.0":linhaSeparado[8].toString() ) / 100;
						descSet = Double.parseDouble(linhaSeparado[9].equals("")?"0.0":linhaSeparado[9].toString() ) / 100;
						descOut = Double.parseDouble(linhaSeparado[10].equals("")?"0.0":linhaSeparado[10].toString() ) / 100;
						descNov = Double.parseDouble(linhaSeparado[11].equals("")?"0.0":linhaSeparado[11].toString() ) / 100;
						descDez = Double.parseDouble(linhaSeparado[12].equals("")?"0.0":linhaSeparado[12].toString() ) / 100;
						descDec = Double.parseDouble(linhaSeparado[13].equals("")?"0.0":linhaSeparado[13].toString() ) / 100;
						
						
						System.out.println(	"Descontos\nJan: " + descJan + 
											" Fev: " + descFev +
											" Mar: " + descMar +
											" Abr: " + descAbr +
											" Mai: " + descMai +
											" Jun: " + descJun +
											"\nJul: " + descJul +
											" Ago: " + descAgo +
											" Set: " + descSet +
											" Out: " + descOut +
											" Nov: " + descNov +
											" Dez: " + descDez +
											" Dec: " + descDec
											);
						break;
						
					case "RTIPA":
						irrfJan = Double.parseDouble(linhaSeparado[1].equals("")?"0.0":linhaSeparado[1].toString() ) / 100; 
						irrfFev = Double.parseDouble(linhaSeparado[2].equals("")?"0.0":linhaSeparado[2].toString() ) / 100;
						irrfMar = Double.parseDouble(linhaSeparado[3].equals("")?"0.0":linhaSeparado[3].toString() ) / 100; 
						irrfAbr = Double.parseDouble(linhaSeparado[4].equals("")?"0.0":linhaSeparado[4].toString() ) / 100;
						irrfMai = Double.parseDouble(linhaSeparado[5].equals("")?"0.0":linhaSeparado[5].toString() ) / 100;
						irrfJun = Double.parseDouble(linhaSeparado[6].equals("")?"0.0":linhaSeparado[6].toString() ) / 100;
						irrfJul = Double.parseDouble(linhaSeparado[7].equals("")?"0.0":linhaSeparado[7].toString() ) / 100;
						irrfAgo = Double.parseDouble(linhaSeparado[8].equals("")?"0.0":linhaSeparado[8].toString() ) / 100;
						irrfSet = Double.parseDouble(linhaSeparado[9].equals("")?"0.0":linhaSeparado[9].toString() ) / 100;
						irrfOut = Double.parseDouble(linhaSeparado[10].equals("")?"0.0":linhaSeparado[10].toString() ) / 100;
						irrfNov = Double.parseDouble(linhaSeparado[11].equals("")?"0.0":linhaSeparado[11].toString() ) / 100;
						irrfDez = Double.parseDouble(linhaSeparado[12].equals("")?"0.0":linhaSeparado[12].toString() ) / 100;
						irrfDec = Double.parseDouble(linhaSeparado[13].equals("")?"0.0":linhaSeparado[13].toString() ) / 100;
						
						
						System.out.println(	"Descontos IRRF\nJan: " + irrfJan + 
											" Fev: " + irrfFev +
											" Mar: " + irrfMar +
											" Abr: " + irrfAbr +
											" Mai: " + irrfMai +
											" Jun: " + irrfJun +
											"\nJul: " + irrfJul +
											" Ago: " + irrfAgo +
											" Set: " + irrfSet +
											" Out: " + irrfOut +
											" Nov: " + irrfNov +
											" Dez: " + irrfDez +
											" Dec: " + irrfDec
											);
								break;
					
					
						case "RTIRF":
							irrfJan = Double.parseDouble(linhaSeparado[1].equals("")?"0.0":linhaSeparado[1].toString() ) / 100; 
							irrfFev = Double.parseDouble(linhaSeparado[2].equals("")?"0.0":linhaSeparado[2].toString() ) / 100;
							irrfMar = Double.parseDouble(linhaSeparado[3].equals("")?"0.0":linhaSeparado[3].toString() ) / 100; 
							irrfAbr = Double.parseDouble(linhaSeparado[4].equals("")?"0.0":linhaSeparado[4].toString() ) / 100;
							irrfMai = Double.parseDouble(linhaSeparado[5].equals("")?"0.0":linhaSeparado[5].toString() ) / 100;
							irrfJun = Double.parseDouble(linhaSeparado[6].equals("")?"0.0":linhaSeparado[6].toString() ) / 100;
							irrfJul = Double.parseDouble(linhaSeparado[7].equals("")?"0.0":linhaSeparado[7].toString() ) / 100;
							irrfAgo = Double.parseDouble(linhaSeparado[8].equals("")?"0.0":linhaSeparado[8].toString() ) / 100;
							irrfSet = Double.parseDouble(linhaSeparado[9].equals("")?"0.0":linhaSeparado[9].toString() ) / 100;
							irrfOut = Double.parseDouble(linhaSeparado[10].equals("")?"0.0":linhaSeparado[10].toString() ) / 100;
							irrfNov = Double.parseDouble(linhaSeparado[11].equals("")?"0.0":linhaSeparado[11].toString() ) / 100;
							irrfDez = Double.parseDouble(linhaSeparado[12].equals("")?"0.0":linhaSeparado[12].toString() ) / 100;
							irrfDec = Double.parseDouble(linhaSeparado[13].equals("")?"0.0":linhaSeparado[13].toString() ) / 100;
							
							
							System.out.println(	"Descontos IRRF\nJan: " + irrfJan + 
												" Fev: " + irrfFev +
												" Mar: " + irrfMar +
												" Abr: " + irrfAbr +
												" Mai: " + irrfMai +
												" Jun: " + irrfJun +
												"\nJul: " + irrfJul +
												" Ago: " + irrfAgo +
												" Set: " + irrfSet +
												" Out: " + irrfOut +
												" Nov: " + irrfNov +
												" Dez: " + irrfDez +
												" Dec: " + irrfDec
												);
							break;
						}
							
						}

			}
			buffer.close();

		} catch (IOException e) {
			// TODO: handle exception
		}

	}
}

/*
 * while ((linha = buffer.readLine()) != null) { String[] linhaSeparado =
 * linha.split("[|]"); for (int idx = 0; idx < linhaSeparado.length; idx++) {
 * System.out.println(linhaSeparado[idx]); } }
 */
/*
 * String str = "DIRF|2014|2013|N||F8UCL6S|" +
 * "RESPO|11122233344|FULANO RESPONSAVEL POR TUDO|88|35313531||35313531||" +
 * "DECPJ|07007007000107|PREFEITURA MUNICIPAL DO MUNICIPIO|2|00762606312|N|N|N|N|N|N|N||"
 * + "IDREC|0561|" + "BPFDEC|00011122252|BELTRANO DE TAL||" +
 * "RTRT|15000|15000|22500|22500|22500|22500|90400|15000|15000|15000|22500|22500|22500|"
 * + "RTPO|2255|2255|5025|5025|5025|5025|7232|2255|2255|2255|5025|5025|5025|" +
 * "BPFDEC|00038658356|CICLANO DE TAL||" +
 * "RTRT||||||||52525|22500|122500|122500|122500|69917|" +
 * "RTPO||||||||4158|5025|15102|15102|15102|5593|"; String[] result =
 * str.split("[|]"); for (String r : result) { System.out.println(r.toString());
 * }
 */
